const MyPromise  =  require('./MyPromise')

// let r = new MyPromise((resolve,reject)=>{
//     // resolve('success')
//     reject('fail')
// })
// 异步代码
let r = new MyPromise((resolve,reject)=>{
    resolve('success')

    //
    // reject('fail')
})

// //多次调用 then
// r.then((res)=>{
//     console.log(1)
//     console.log(res)
// },(err)=>{
//     console.log('fail',err)
// })
// r.then((res)=>{
//     console.log(2)
//     console.log(res)
// },(err)=>{
//     console.log('fail',err)
// })

function other(){
    return new MyPromise((resolve)=>{
        setTimeout(()=>{
            resolve(1111)
        },1000)
    })
}

// // 链式调用 then方法需返回promise对象
r.then((d)=>{
    console.log(d)
    return other()
},(e)=>{
    console.error(e)
}).catch(e=>{
    console.error(e)
}).then((d)=>{
    console.log(d)
    return 101
}).then((d)=>{
    console.log("===")
    console.log(d)
}).finally(v=>{
    console.error('finally')
    console.error(v)
}).catch(e=>{
    console.error(e)
})

// let p1 = new MyPromise((resolve,reject) =>{
//     console.log('p1')
//     setTimeout(()=>{
//         resolve('p1 result')
//         // reject('p1 reject')
//     },1000)
// })
// let p2 = new MyPromise(resolve =>{
//     setTimeout(()=>{
//         resolve('p2 result')
//         // reject('p2 reject')
//     },3000)
// })
// MyPromise.all([p1, p2]).then((res)=>{
//     console.log(1)
//     console.log(res)
// },(e)=>{
//     console.error('fail',e)
// }).catch((e)=>{
//     console.error(e)
// })
